package com.xhai.common.utils.classes;

import java.nio.ByteBuffer;

/**
 * @author xhai
 * @description 字节工具类
 * @date 2025/7/2
 */
public class ByteArrayUtils {
    /**
     * 将a、b字节数组相连
     *
     * @param a
     * @param b
     * @return
     */
    public static byte[] concatenate(byte[] a, byte[] b) {
        return ByteBuffer.allocate(a.length + b.length)
                .put(a)
                .put(b)
                .array();
    }

    /**
     * 提取byte数组的指定片段
     *
     * @param array 原始数组
     * @param start 起始索引（包含）
     * @param end   结束索引（不包含）
     * @return 提取的子数组
     * @throws IllegalArgumentException 如果索引越界或start > end
     */
    public static byte[] subarray(byte[] array, int start, int end) {
        if (start < 0 || end > array.length || start > end) {
            throw new IllegalArgumentException("索引越界或start > end");
        }
        byte[] result = new byte[end - start];
        System.arraycopy(array, start, result, 0, end - start);
        return result;
    }
}
